package com.skq.pojo;


import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;

import java.time.LocalDateTime;

@Data
@Schema(description = "用户")
public class User {
    @NotNull
    @Schema(description = "主键ID")
    private Integer id;//主键ID

    @Schema(description = "用户名")
    private String username;//用户名

    /**
     * 忽略JSON序列化和反序列化时的属性
     * <p>
     * 通过添加这个注解，可以防止在JSON转换过程中这个属性被序列化或反序列化。
     * 这对于某些情况下需要隐藏敏感信息或者减少不必要的数据传输是非常有用的。
     * 例如，一个用户对象中的密码字段通常不需要在API响应中暴露，此时就可以使用@JsonIgnore注解。
     */
    @JsonIgnore
    @Schema(description = "密码")
    private String password;//密码

    @NotEmpty
    @Pattern(regexp = "^.{1,10}$")
    @Schema(description = "昵称")
    private String nickname;//昵称

    @NotEmpty
    @Email
    @Schema(description = "邮箱")
    private String email;//邮箱

    @Schema(description = "用户头像地址")
    private String userPic;//用户头像地址

    @Schema(description = "创建时间")
    private LocalDateTime createTime;//创建时间

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;//更新时间
}
